package com.gis.bigdata.spark.core.rdd.builder

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * @author LnnuUser
 * @create 2021-08-26-下午7:34
 */
object Spark01_RDD_File_Par {

  def main(args: Array[String]): Unit = {

    // TODO 准备环境
    //local[*] 代表本机的最大线程数，如果不写，模拟的就是单线程
    val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
    val sc: SparkContext = new SparkContext(sparkConf)

    // TODO 创建RDD
    // textFile可以将文件作为数据处理的数据源，默认也可以设置分区
    // minPartitions: 最小分区数量
    // math.min(defaultParallelism, 2)
    // 如果不想使用默认的分区数量，就可以通过第二个参数指定分区数
    // spark读取文件，底层使用的是hadoop的读取方式
    // 分区数量的计算方式
    // totalSize 字节数 = 7
    // goalSize = 7 / 2 = 3(byte) 每个分区放3个字节
    // 7 / 3 = 2...1 + 1 = 3(分区)  剩余1个字节，1/3超过了10%，所以增加一个分区
    val rdd: RDD[String] = sc.textFile("datas/1.txt")

    rdd.saveAsTextFile("output")


    // TODO 关闭环境
    sc.stop()

  }

}
